main() async {
  // 获取流
  var stream = countStream(10);
  // 获取最后一个大于 0 的数
  var num = await lastPositive(stream);
  print(num);
}

/// 创建流
/// @return async* 返回一个 Iterable
Stream<int> countStream(int num) async* {
  for (int i = 0; i < num; i++) {
    yield i;
  }
}

/// 获取最后一个大于 0 的数
Future<int> lastPositive(Stream<int> stream) => stream.lastWhere((x) => x > 0);